From 4d8c7c57829392194658a1dd7a2dcf0e5e66fcc8 Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Thu, 6 Jan 2011 01:30:17 +0900 Subject: [PATCH] Ensure that GtkIconView items get redrawn when the focus cell changes. Seems the redraw was not happenning from keynav when set_focus_cell() was called because keynav already updates the focus-cell. Now we just unconditionally redraw the focus item when set_focus_cell() is called. --- gtk/gtkiconview.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c index de5889ec78..47dc4c751a 100644 --- a/gtk/gtkiconview.c +++ b/gtk/gtkiconview.c @@ -3083,6 +3083,13 @@ gtk_icon_view_set_cursor_item (GtkIconView *icon_view, AtkObject *item_obj; AtkObject *cursor_item_obj; + /* When hitting this path from keynav, the focus cell is + * already set, we dont need to notify the atk object + * but we still need to queue the draw here (in the case + * that the focus cell changes but not the cursor item). + */ + gtk_icon_view_queue_draw_item (icon_view, item); + if (icon_view->priv->cursor_item == item && (cursor_cell == NULL || cursor_cell == gtk_cell_area_get_focus_cell (icon_view->priv->cell_area))) return; @@ -3108,8 +3115,6 @@ gtk_icon_view_set_cursor_item (GtkIconView *icon_view, if (!gtk_cell_area_get_focus_cell (icon_view->priv->cell_area)) gtk_cell_area_focus (icon_view->priv->cell_area, GTK_DIR_TAB_FORWARD); } - - gtk_icon_view_queue_draw_item (icon_view, item); /* Notify that accessible focus object has changed */ item_obj = atk_object_ref_accessible_child (obj, item->index); -- 2.30.2